public class ThreadDemo4 {
    public static void main(String[] args) throws InterruptedException {
        Thread thread = new Thread(()->{
            for (int i = 0; i < 100;i++){
                // 这个循环体啥也不干，也不slee

                // 要想让时间更均衡，需要在run里面加跟多的计算逻辑
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
        });

        // 在启动之前来获取thread的状态
        System.out.println("start 之前： "+thread.getState());

        thread.start();

        for (int i = 0; i < 1000; i++) {
            System.out.println("正在 thread 执行中的状态: "+thread.getState()); // 这里是为了看到TIMED_WAITING状态
            // 需要加一个for循环多次观察 这里就能够看到循环交替的状态了
        }


        System.out.println("正在 thread 执行中的状态: "+thread.getState()); //在这里写就是表示这个线程是就绪状态
        // 但是之所以能够看到RUNNABLE ，主要是当前线程里面的run方法没有写任何sleep或者其他影响的方法

        // 一旦在run中加了sleep后 那么在后续的打印状态中，具体看到的是RUNNABLE还是TIMED_WAITING就不一定了
        //（取决于当前咱们的thread线程是运行到哪个环节了）
        thread.join();

        //线程执行完毕之后就是，TERMINATED状态
        System.out.println("thread 结束之后: "+thread.getState()); // 这个状态没啥用 就是PCB消亡了此时thread对象还在
        // 此时thread对象表示成了无效，也是不能重新start了，一个线程只能start一次(这个不是强制的，只是建议，但是容易搞乱)



    }
}
